C++ 变量声明与定义

1
2
auto a {12} // a 是 int 类型
auto pi {3.141592} // pi 是 double 类型
  • 使用 {} 初始变量,编译器会检查数据是否匹配类型,比如 int b {3.5} 会编译不通过,使用 = 号会通过编译,并将将 double 3.5 缩减为 int 3
  • auto 关键字自动推导类型, 代替那些冗长、复杂的变量类型声明。
1
2
3
// auto 不是银弹
auto str {"hello"}; //const char*
std::string str2 {"hello"}; //std::string

命名空间

  • 写法 std::string (std 是命名空间,string 是 std 中定义的类)
  • 避免变量名冲突
  • 封装复杂业务逻辑
1
2
3
4
std::string ss {"hello world"};
// 使用 using namespace 简化
using namespace std;
string s2 {"hello cpp"}

静态变量

  • 只会在程序开始运行时初始化一次
  • 在程序声明周期里一直存在
  • 存储在数据段
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
void testStaticVar() {
static int a{1};
cout << a << endl;
a = a + 1;
}
int main() {
testStaticVar(); //输出:1
// 重复调用,a 不会重新初始化
testStaticVar(); //输出:2
return 0;
}

全局变量

  • 存储在数据段

局部变量

  • 局部块中的变量会隐藏外部块的同名变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int a{ 1 };
int main() {
int a { 123 };
cout << "外部的a:" << a << endl; //外部的a:123
{
cout << "外部的a:" << a << endl; //外部的a:123
int a{ 456 };
cout << "内部的a:" << a << endl; //内部的a:456
a = a + 1;
cout << "内部的a:" << a << endl; //内部的a:457
//使用限定符访问全局变量
cout << "全局的a:" << ::a << endl; //全局的a:1
}
cout << "外部的a:" << a << endl; //外部的a:123
cout << "全局的a:" << ::a << endl; //全局的a:1
}

数字

  • int, float, double
  • 可以使用 lone, short, unsigned, signed 等修饰符去改变 int 等类型的位数
  • C++ 在不同平台上同一类型可能是不同的位数,比如 int 可能是 2 或 4 位
  • math.h 标准库提供了一系列操作数字的方法,比如 floor, round 等

字符串

  • char 定义字符串
  • 字符\0 标志字符串终止
  • 标准库提供 string 类
  • R"()"原始字符串(类似 js 里的 模版字符串)
作者

大下坡

发布于

2023-11-07

更新于

2023-11-07

许可协议